home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / ip / ka9q / alpha.arc / GLOBAL.H < prev    next >
C/C++ Source or Header  |  1988-04-26  |  2KB  |  75 lines

  1. /* Global definitions used by every source file.
  2.  * Some may be compiler dependent.
  3.  */
  4.  
  5. /* Indexes into binmode in files.c; hook for compilers that have special
  6.  * open modes for binary files
  7.  */
  8. #define    READ_BINARY    0
  9. #define    WRITE_BINARY    1
  10. extern char *binmode[];
  11.  
  12. /* These two lines assume that your compiler's longs are 32 bits and
  13.  * shorts are 16 bits. It is already assumed that chars are 8 bits,
  14.  * but it doesn't matter if they're signed or unsigned.
  15.  */
  16. typedef long int32;        /* 32-bit signed integer */
  17. typedef unsigned short int16;    /* 16-bit unsigned integer */
  18. #define    uchar(x) ((unsigned char)(x))
  19. #define    MAXINT16 65535        /* Largest 16-bit integer */
  20.  
  21. /* Since not all compilers support structure assignment, the ASSIGN()
  22.  * macro is used. This controls how it's actually implemented.
  23.  */
  24. #ifdef    NOSTRUCTASSIGN    /* Version for old compilers that don't support it */
  25. #define    ASSIGN(a,b)    memcpy((char *)&(a),(char *)&(b),sizeof(b));
  26. #else            /* Version for compilers that do */
  27. #define    ASSIGN(a,b)    ((a) = (b))
  28. #endif
  29.  
  30. /* Define null object pointer in case stdio.h isn't included */
  31. #ifndef    NULL
  32. /* General purpose NULL pointer */
  33. #define    NULL (void *)0
  34. #endif
  35. #define    NULLCHAR (char *)0    /* Null character pointer */
  36. #define    NULLFP     (int (*)())0    /* Null pointer to function returning int */
  37. #define    NULLVFP     (void (*)())0    /* Null pointer to function returning void */
  38. #define    NULLFILE (FILE *)0    /* Null file pointer */
  39.  
  40. /* General purpose function macros */
  41. #define    min(x,y)    ((x)<(y)?(x):(y))    /* Lesser of two args */
  42. #define    max(x,y)    ((x)>(y)?(x):(y))    /* Greater of two args */
  43.  
  44. #ifdef    MPU8080    /* Assembler routines are available */
  45. int16 hinibble(),lonibble(),hibyte(),lobyte(),hiword(),loword();
  46.  
  47. #else
  48.  
  49. /* Extract a short from a long */
  50. #define    hiword(x)    ((int16)((x) >> 16))
  51. #define    loword(x)    ((int16)(x))
  52.  
  53. /* Extract a byte from a short */
  54. #define    hibyte(x)    (((x) >> 8) & 0xff)
  55. #define    lobyte(x)    ((x) & 0xff)
  56.  
  57. /* Extract nibbles from a byte */
  58. #define    hinibble(x)    (((x) >> 4) & 0xf)
  59. #define    lonibble(x)    ((x) & 0xf)
  60.  
  61. #endif
  62.  
  63. #ifdef    SYS5
  64. #define rindex    strrchr
  65. #define index    strchr
  66. #endif
  67.  
  68. /* Heavily used functions from the standard library */
  69. char *index(),*rindex(),*malloc(),*calloc(),*ctime(),*tmpnam();
  70. long atol(),htol();
  71.  
  72. /* Hardware I/O functions that can be replaced with macros in some compilers */
  73. unsigned char inportb();
  74. unsigned int inportw();
  75.